#include "namedPipe.hpp"

//1.读
int main()
{
    //1.创建管道
    int res=mkfifo(fifo_name.c_str(),0666);
    if(res < 0)
    {
        std::cerr << "mkfifo fail !!! errno:" << errno << "|" << strerror(errno) << std::endl;
    }
    //2.以只读打开文件
    int rfd=open(fifo_name.c_str(),Read);
    if(rfd < 0)
    {
        std::cerr << "open fail !!! errno:" << errno << "|" << strerror(errno) << std::endl;
        exit(0);
    }
    //3.读取数据
    while(true)
    {
        char buff[buf];
        int n=read(rfd,buff,sizeof(buff));//读入1024个字符；不能-1，因为-1就会读1023个字符，缓冲区会多一个\0；会导致发送一次，两次接收才能接收到，一次为空，因为执行\0;一次为正常接收，
        if(n > 0)
        {
            std::cout << "server get messages:" << buff << std::endl;
        }
        else if(n == 0)
        {
            std::cerr << "写端关闭，读端读取到0，文件读取完毕" << std::endl;
            break;
        }
        else
        {
            std::cerr << "读取异常 ！！！！" << std::endl;
            break;
        }

    }
    close(rfd); //关闭读端
    unlink(fifo_name.c_str()); //删除命名管道文件
    return 0;
}